{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# K Means Clustering"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Steps involved in K Means Clustering\n",
    "1. Initialize two examples of the training data set as Centroids using Kmeans++ or random initialization\n",
    "2. Loop over the num of iterations to perform the clustering.\n",
    "   2.a. For each training example compute the euclidian distance from the centroid and assign the cluster\n",
    "   based on the minimal distance.\n",
    "   2.b Adjust the centroid of each cluster by taking the average of all the training examples which belonged \n",
    "   to that cluster on the basis of the computations performed in step 2.a"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "#import libraries\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import pandas as pd\n",
    "import random as rd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "# -*- coding: utf-8 -*-\n",
    "\"\"\"\n",
    "Created on Wed Dec 12 16:35:06 2018\n",
    "\n",
    "@author: purandur\n",
    "\"\"\"\n",
    "import numpy as np\n",
    "import random as rd\n",
    "class Kmeans:\n",
    "    def __init__(self,X,K):\n",
    "        self.X=X\n",
    "        self.Output={}\n",
    "        self.Centroids=np.array([]).reshape(self.X.shape[1],0)\n",
    "        self.K=K\n",
    "        self.m=self.X.shape[0]\n",
    "        \n",
    "    def kmeanspp(self,X,K):\n",
    "        i=rd.randint(0,X.shape[0])\n",
    "        Centroid_temp=np.array([X[i]])\n",
    "        for k in range(1,K):\n",
    "            D=np.array([]) \n",
    "            for x in X:\n",
    "                D=np.append(D,np.min(np.sum((x-Centroid_temp)**2)))\n",
    "            prob=D/np.sum(D)\n",
    "            cummulative_prob=np.cumsum(prob)\n",
    "            r=rd.random()\n",
    "            i=0\n",
    "            for j,p in enumerate(cummulative_prob):\n",
    "                if r<p:\n",
    "                    i=j\n",
    "                    break\n",
    "            Centroid_temp=np.append(Centroid_temp,[X[i]],axis=0)\n",
    "        return Centroid_temp.T\n",
    "    \n",
    "    def fit(self,n_iter):\n",
    "        #randomly Initialize the centroids\n",
    "        self.Centroids=self.kmeanspp(self.X,self.K)\n",
    "        \n",
    "        \"\"\"for i in range(self.K):\n",
    "            rand=rd.randint(0,self.m-1)\n",
    "            self.Centroids=np.c_[self.Centroids,self.X[rand]]\"\"\"\n",
    "        \n",
    "        #compute euclidian distances and assign clusters\n",
    "        for n in range(n_iter):\n",
    "            EuclidianDistance=np.array([]).reshape(self.m,0)\n",
    "            for k in range(self.K):\n",
    "                tempDist=np.sum((self.X-self.Centroids[:,k])**2,axis=1)\n",
    "                EuclidianDistance=np.c_[EuclidianDistance,tempDist]\n",
    "            C=np.argmin(EuclidianDistance,axis=1)+1\n",
    "            #adjust the centroids\n",
    "            Y={}\n",
    "            for k in range(self.K):\n",
    "                Y[k+1]=np.array([]).reshape(2,0)\n",
    "            for i in range(self.m):\n",
    "                Y[C[i]]=np.c_[Y[C[i]],self.X[i]]\n",
    "        \n",
    "            for k in range(self.K):\n",
    "                Y[k+1]=Y[k+1].T\n",
    "            for k in range(self.K):\n",
    "                self.Centroids[:,k]=np.mean(Y[k+1],axis=0)\n",
    "                \n",
    "            self.Output=Y\n",
    "            \n",
    "    \n",
    "    def predict(self):\n",
    "        return self.Output,self.Centroids.T\n",
    "    \n",
    "    def WCSS(self):\n",
    "        wcss=0\n",
    "        for k in range(self.K):\n",
    "            wcss+=np.sum((self.Output[k+1]-self.Centroids[:,k])**2)\n",
    "        return wcss"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "dataset=pd.read_csv('Mall_Customers.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "X = dataset.iloc[:, [3, 4]].values"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>CustomerID</th>\n",
       "      <th>Age</th>\n",
       "      <th>Annual Income (k$)</th>\n",
       "      <th>Spending Score (1-100)</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>200.000000</td>\n",
       "      <td>200.000000</td>\n",
       "      <td>200.000000</td>\n",
       "      <td>200.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>100.500000</td>\n",
       "      <td>38.850000</td>\n",
       "      <td>60.560000</td>\n",
       "      <td>50.200000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>57.879185</td>\n",
       "      <td>13.969007</td>\n",
       "      <td>26.264721</td>\n",
       "      <td>25.823522</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>18.000000</td>\n",
       "      <td>15.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>50.750000</td>\n",
       "      <td>28.750000</td>\n",
       "      <td>41.500000</td>\n",
       "      <td>34.750000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>100.500000</td>\n",
       "      <td>36.000000</td>\n",
       "      <td>61.500000</td>\n",
       "      <td>50.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>150.250000</td>\n",
       "      <td>49.000000</td>\n",
       "      <td>78.000000</td>\n",
       "      <td>73.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>200.000000</td>\n",
       "      <td>70.000000</td>\n",
       "      <td>137.000000</td>\n",
       "      <td>99.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       CustomerID         Age  Annual Income (k$)  Spending Score (1-100)\n",
       "count  200.000000  200.000000          200.000000              200.000000\n",
       "mean   100.500000   38.850000           60.560000               50.200000\n",
       "std     57.879185   13.969007           26.264721               25.823522\n",
       "min      1.000000   18.000000           15.000000                1.000000\n",
       "25%     50.750000   28.750000           41.500000               34.750000\n",
       "50%    100.500000   36.000000           61.500000               50.000000\n",
       "75%    150.250000   49.000000           78.000000               73.000000\n",
       "max    200.000000   70.000000          137.000000               99.000000"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dataset.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "m=X.shape[0]\n",
    "n_iter=100"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "from Kmeans import Kmeans"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "#to find optimum number of clusters use elbow method\n",
    "WCSS_array=np.array([])\n",
    "for K in range(1,11):\n",
    "    kmeans=Kmeans(X,K)\n",
    "    kmeans.fit(n_iter)\n",
    "    Output,Centroids=kmeans.predict()\n",
    "    wcss=0\n",
    "    for k in range(K):\n",
    "        wcss+=np.sum((Output[k+1]-Centroids[k,:])**2)\n",
    "    #WCSS_array=np.append(WCSS_array,kmeans.WCSS())\n",
    "    WCSS_array=np.append(WCSS_array,wcss)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "K_array=np.arange(1,11,1)\n",
    "plt.plot(K_array,WCSS_array)\n",
    "plt.xlabel('Number of Clusters')\n",
    "plt.ylabel('within-cluster sums of squares (WCSS)')\n",
    "plt.title('Elbow method to determine optimum number of clusters')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The idea is that we want a small WCSS, but that the WCSS tends to decrease toward 0 as we increase k (the WCSS is 0 when k is equal to the number of data points in the dataset, because then each data point is its own cluster, and there is no error between it and the center of its cluster). So our goal is to choose a small value of k that still has a low WCSS, and the elbow usually represents where we start to have diminishing returns by increasing k."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "#based on these observations we choose 5 as optimum number of clusters\n",
    "K=5"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "kmeans=Kmeans(X,K)\n",
    "kmeans.fit(n_iter)\n",
    "Output,Centroids=kmeans.predict()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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wby/zuNXr/2KHU072ow92dj8CNIgFKXxssbAezCMTIgJiClTwgeRqiqqyn333UfXrl1RVcaPH8/999/Pueeem8fRtiZVqo3dwOuea6tR4oSZaQdpGEGz7gqpSBkXAW01hidXPenb78lVT/qeb+func3CIXHsyWwKflpSdTf/MidB7Ua0yVf8SrHTfb///vt07doVcAn7duzYkTQ/VD4I48V0APCGiCwAvog1quq4vI3KyAup4gGSaRhBs+4mbUrp6eO3lp9s1i+E/ydYs3lN0khwPy0pldeTUTrkK34llu77z3/+Mz179uSTTz7hjjtQiHl0AAAgAElEQVTuSHlcLN13bW0tO3bsoKmpiRtvvJHly5ezZMkSgFbpvlWVcePG8eKLL9KnTx/eeustfv3rX7dakho9ejQLFixgzJgxjB8/PuN7yoQwRuprgdOA64D/jNuMEiOVd1AyDSPZrDuZp0/QWn4yjSQdz6E+3fqknPknaknJIsuN0iJd+1NYskn3ff3113PTTTexevVqKisr2/SJT/c9ZMgQVq5cyapVqwB8030//fTTrFu3ju3bt/tmh80nYYzUf8LZH/b2thVem1FipPIOytSzKGhf/dn1NF7W6PvgTaaR+J2vU4dO7FHROvwm2fX97iGeeK+moDEa0SdMlHwmRCndN0Dnzp0ZN24cjzxS2AQTKQWEiJwDLAC+CZwDvCoihdVzjJwQNHMGt1YftFQT8yxKjLiu7FjJBQ9ewIznZjBx0MS0ZuT779WBacfDb86ER891r9OOhy/t1cF3nL8+89fcecadzdpChVS0minG+gdh8QzlSboxM2GJQrrvzz//nHXr1gHOBvHkk09yxBFHZHVf6RLGBjEDOEZV10NzoNwfcEn2jBIjMWo6lQdSvIYRO9Zv3Xf+6/NDLtMsBG7gb1N3o0BVp5Y9W3bCdSN3A2dTO2A6tQMafc/gt+Y89/S5NF7WyJQnpgR6RxnlR77sSfHpvisqKjj66KObDdHg0n2fc8453H333Zx00knN7ffeey/19fV06tSJ/fffn5kzZ9K9e/fmdN9jxozhlltuYcWKFQwfPhyALl26UF9fT0VF62XXL774gnHjxrF9+3aampo46aSTuPTSS7O6r3RJme5bRJap6oC49x2A1+PbisWwYcM05klgZEbNbTWBBuPqbtXUjaprfug3LGtgxnMz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pRbjE1nq61WrqlShZauqKp/gNz+KdM/+gXIfqWpnze6R0VlV14caw3PPPaf/9E//5Lvv5ptv1mHDhumAAQN05syZqqr63nvv6RFHHKHf/e539aijjtJTTjlFt2zZovfff7/utddeethhh+mgQYN0y5YtWl1drddee62OGDFC77nnHn3ttdf02GOP1QEDBuiZZ56pn3zyiaqqTpw4Ue+//35VVX3qqaf08MMP1xEjRugPfvADPfXUU1VV9YUXXtBBgwbpoEGDdPDgwfqPf/wj1OdJyEC5MBoEwBJcVteHgI0iYoumWRKUhHIi5VOgqKwoxdl/tkQqc+tdOTiHhD7P8uXLGTp0aJv2+FTdS5YsYfHixbz44osArFq1iu9973u88cYb7LPPPjzwwAOMHz+eYcOGNRf9iWV37dy5My+//DLnnnsuF154ITfddBNLly5lwIABXHvtta2uuW3bNi6++GIee+wxXnrpJf7+978377v11lv5+c9/zpIlS3jppZd8s8dmQ0oBISI/AD4CngUeB57wXo0sCFq5bqK8qtiVFYk2hXIWDhCxzK1LaeutlC5bgWUpeyUjWarugw8+mMGDBwMwdOhQGpO4Ln/rW98CYPPmzWzatIkTT3RxyRMnTmwWODFWrlzJwQcfTN++fRERzj///OZ9I0aM4PLLL+eOO+5g06ZNdOwYJr1eeMJoEFOBw1W1n6oOVNUBqjowp6NohyRTwcqpip1RwkQqc+vm1F1C8WmoXv369WvO1hqPqkvVHSsB+s4773DRRa468p577tncr6Kigl27drU5PkZiWu9UBKUev+qqq5g3bx5bt27luOOOY+XKlWmdNxVhBMT75O7bMTz8PIziMc94o+j4xXIUzeuqW47Os2+oXieddBLbt2/nl7/8ZXPbwoUL6dq1a6hU3fEkpvuOp1u3buy777689NJLANx9993N2kSMI444gvfee493330XgHvuuad537vvvsuAAQP4yU9+wrBhw4oiIP4GvCAi00Xk8tiW01GUCel4JcU8jPzro7WfKnaRJVLeO0UiUnaXgbj6YtlQCQwI1VNEeOihh3j22Wc59NBD6devH7NmzWLChAlMmDCB4cOHM2DAAMaPHx/48I/x7W9/m0svvZTBgwezdWtbL6z58+dzxRVXMHDgQJYsWcLMmTNb7e/cuTNz587l1FNP5YQTTqC6uqVu+2233Ub//v0ZNGgQlZWVjBkzJtT9hSUw1UZzB+fa2gZ1QXRFpVipNvxIzM8ETkNI5Vaa6XFGHknMxApu5lzuRumI4J9qYz3OUTsbO0RnnG7evnI0ZZNqI6VFIyYIRGQvVf0i41GWOclK4yZ7pMT2zcD9dPvglp9y/RhqKMA1yoZk3jsmIIrEfrjcSg+TOoLaDwHGklPhsHEjfPAB7NgBe+wBBx4YHC1fooTxYhouIm8CK7z3g0Rkdt5HVmJkk4OpFpfIb7f3mg/hMAmXuE9pyTDbDhdNwhEp7x2jhem4ZaJMqPSOzxEbN7p8XDu8JBM7drj3sUy9ZUIYG8RtwGhgI4Cqvg78cz4HVYpEKQdTIsm0G8OHSHnvJKHd2UmOAW4luXuHH1XecSlXVMLzwQfO3Tme3btdexkRKlBOVd9PaAqOD2+nRCkHUyJRyjBbEkTKeyeAmJ1k9WoX45wqu2yJEWwbnUyLkPB3/WxBaBEOk3M3OGjRHMK2F4lUNuZUhHJzFZHjARWRPURkGt5yk9FClPIeJXpTdQ/oF7H5cHSIlPeOR6K2MHVqhKKcc0vnzp3ZuHFjCiHxJ+AsnOE5cdmp0ms/y+uXY+EAzuaQTnsRUFU2btxI586Ze3+F8WLqCdwOnIx75jwNTFXVoi+2RcmLKSr4eUV1wgmt+LmNeUqVEH5eVUGItF36KDF27tzJ2rVr2bYttcdSRcUndOv2MHvu+RYVFZ/R1LQ327cfzubNZ9LUFDQ1ygFffOHsDfHPTxFnpE4zCC6fdO7cmd69e9OpU6dW7WG9mFIKiChjAqItNfhXkesBdMG8mEoSq04XTRoanMa2Zo2zTyWrMBgxcubmKiKH4DSI43BOMK8AP1LVv2U9SiPnBNkVPgE+LuRAjNwR1nsqanaScqe2tmQEQqaEsUH8L3AfcADwZVxW13uSHmEUjSh7UxkZEuQ91aNHdOwk7c6jqn0QRkCIqt6tqru8rZ7MIlWMAhBlbyojQ4K8qm6/PRrZZcvco6o9E0ZA/FFErhKRGhGpFpErgSdEpLuI5NEKVA6sB24GzgdO915vBjbk7YpR8qYyckQUvariCYo8nzrVtIoSJ4wX03tJdquqHpLbIYUnukbqhbjyhk957+O9MSpxCtgYXGTnMYUdmmHkmg4dWnvzBGH5rCJDWCN1Sg1CVQ9OshVNOESXOcBIXM6YbbRNLrbVa3vY6zengGMzikK5r8+HjTAvkziN9kSggBCRY0Rk/7j3F4rIIyJyhy0tBTEHmIaLQkg1o1Kv3zRMSJQx7WF93s9GEoTlsyopkmkQ/4MXWyUi/wzcCPwGVzxobv6HVmospEU4pENMSERxqczImkjVdc4TfjaSoKymUctnZSQlmYCoUNVPvL+/BcxV1QdU9f8BX8n/0EqNG3DLR5mw1TveKDvaS2bYxHrdt98e/XxWRkqSCggRiQXSjQKej9uXcWVsETlIRP4oIitE5A0Rmeq1dxeRZ0VklfcarjZgJFiPM0hn6v2rwJPk07vJKBL5yAzb0ABDD4IrBR7qAmuHUAgPubSIuueVEYpkAuIe4E8i8ghuivsSgIh8hexqVO8CfqyqR+Kis78nIkcBVwHPqWpf4DnvfYlwVw7OITk6jxEpxo5Nrz0VT10HXS6El9fCLOCsL6D3a7gsXLNwIZFn45Y8i0yiVmHCoeQI1ARUtU5EnsNFUD+jLf6wHYAfZHpBVV0HrPP+/kxEVgAHAmfg3HoA5gMvAD/J9DqFZSnZlUIEJ4OX5WAsRqR48sn02pMyB06cBXtqQDHz2BLnw7icmnlIc220K5IuFanqX3za3s7VxUWkBjgaeBX4kic8UNV1IrJfwDGTcAlL6RMZg1c2ClU8n+boPEZkyJkNwvOQqwqzjBnvIQcmJIxMCVUwKB+ISBfgAeAyVf1H2ONUda6qDlPVYb16RaX4eLccnaeEzC5GOHJigzAPuXZPkWJpiiIgRKQTTjg0qOqDXvNHInKAt/8AnOW3RBiIK1CSDZXAgByMxYgUOalOZx5y7ZoixtIUXECIiAC/Alao6k/jdj0KTPT+ngg8UuixZc63c3AOTes8iVXjyijsqryorYWJE6HCMxpUVLj3oQ22JewhV+4R5IWiiLE0xdAgRgAXACeJyBJvG4sLxDtFRFYBp3jvS4T9cLmVUtXIDUKAsUC4JbNY1bjVuH//1d57+/eLIA0NMH8+NHll3Jua3PvQD8u7cjCIInjItYcI8kJRxFiaggsIVX1ZVUVVB6rqYG97UlU3quooVe3rvX6S+mxRYjpta+OGpdI7PhwzaLsavcVrNyJG1rO/EvWQK5UI8lLQcvIRSxOSohmpy49jcG6FIXPSNFPlHZcysWIzQfOGMovNLQ+CSoWGLSFaqh5ypRBBXipaTk7sWJlhAiINUq/7T6ZFSKRabhJahEN6bohWNa6EqPANWAhub0NEPOTSnWkXcdYbmlLRcooZla6qJbsNHTpUC0W9qlYlDKDKa2/LQlU9W1U7q2plwlGVXvvZXr98j8UoKm5u6r+F4iZ1v5ds/lUqVfXmzO+hvl61qqr12KuqXHsujyk0Iv7fi0ixR5Z3gEUa4sdT9Id8NluhBES9qlYEDKI66ZHr1f1jXqCqp3mvN3vt7rzV6gwy1Zr6AR/fv4e3hT3WKBLV1f4PoerqkCf4SLMXEJ019ptrpr7ejUHEvSZ7cGd6D+lcoxhk/d2ULiYgcoTfbD1+y3Suka4WYFpDiZKTmfRZ6n5pmfybiDptNYsxletMuxS0nDxhAiJHVKcYRHWOzxt0vnT7GxEi65n0Ak0+TUm2VWmbpcx0Z87lPNOOupaTJ8IKiJQ1qaNMIWpSdyB5iNJkYHYOzyvA7hz0N8qN+GqFIdneEfa8gzZOEEE1pEVc5tVEYt4+8QZdqy9d0uSsJnV7J5XPRSY5OZOdN1ftRgTIqY99Gh5yTcAXwHVd8fWQS9fDyGo7tFtMQKSgjuSRDZl6dfudt8prz0V/o8jkxcd+MvAn4CwX++YXLbkVl+37ROCGgNiHTPzqrbZDu8QERApqcQW4g7zWM53Bx85bjZsPVnvvg/7t0u1v5IhMtYC8+dgPAx6AEb1hJq5K/KPe60zcD3I8sBjTCIysMRtESGL5j+L/5auwh3RZk83ae7rr/LkYWzxmIzCSYDaIHGMz+HZIGC0gSMPIdyRxYpZYEejSxTQCI6ckrShntKYWEwjtilT5hBJn8TE7A7j1fD/tI1f5cxKzxKo6zeTuu00wGDnDNAjDCCKVFpBMw8j3On+p5BEyShoTEIYRxNixydtTaRj59PwphWypRsljAsIwgngyIMol1l7MjKWlkC0135RCLYcSxwSEYQSRapZexDz9Rb12FCiVWg4ljgkIwwgiaDbevbubsV5wAVRWQo8ehfceau+xDGaDKQgWB2EYQfjFGnTq5B7IO3a0tFnMQeHJd5xJmWNxEGniVy0udQU5o6zxm6V37dpaOIDNXIuB2WAKggkIWqKkV+Mypq4GvgP8a0LbJExItDsSPZE++cS/n3kPFZb2boMpECYggBm0zXu2E0iYJ7LF65sOpoWUGansEpl41Jg3Tvq0dxtMgTAbBKlrPsSTTv0Fy99UhkyZAnPmtG3v2BF27Wp5H9YuYbUWjCJgNog0SGfVMp2+fppJKi0kmcZh2kgECIqNiBcOEN4uYd44RoSxXEy4mgqJM/1OOG0hfpkp3foLQavSQe2JGkfM7hEjaJ/NMwtIOraGMH0tItqIMKZB4J+p9dfAnd7f4OpBxGb/YWfu6VaBS6ZxZKKNGHkgHS+ZMH3NG8eIMCYgPGqBRpx9oZGWzK2xSm5ezsy0vJnSrQKXTONIVxsx8oSf90ynTrDHHq3bwnrUmDeOEWFMQKQgm5l7ujUkkmkcVpM6Ivh5z/z613DnnZl51Jg3jhFhzIspBUEeTul4M4UlmdcTSfbZo8QwjHQwL6YcUciZezKNwyralTBTpjg3WBH3OmVKsUdkGKEwL6YU+Hk4pevNlA7JqtZZRbsSJDFuoqmp5f3s2cUZk2GEJFIahIh8Q0TeEpF3ROSqYlG8PNYAAAluSURBVI8HbOZuZMncuem1G0aEiIwGISIVwM+BU4C1wEIReVRV3yzuyGzmbmRBrGZ02HbDiBBR0iC+Cryjqn9T1R3Ab4Ezijwmw8iOior02g0jQkRJQBwIvB/3fq3X1goRmSQii0Rk0YYNGwo2OMPIiEmT0ms3jAgRJQEhPm1tPExVda6qDlPVYb169SrAsAwjC2bPhsmTWzSGigr33gzURgkQGRsETmM4KO59b+DDIo3FMHLH7NkmEIySJEoaxEKgr4gcLCJ7AOcCjxZ5TIZhGO2WyGgQqrpLRL4PPI3LjXenqr5R5GEZhmG0WyIjIABU9UkgIOG+YRiGUUiitMRkGIZhRAgTEIZhGIYvJZ3NVUQ24Eo0FJqewMdFuG4usXuIBnYP0aC93UO1qqaMEyhpAVEsRGRRmFS5UcbuIRrYPUQDuwd/bInJMAzD8MUEhGEYhuGLCYjMKIdczXYP0cDuIRrYPfhgNgjDMAzDF9MgDMMwDF9MQBiGYRi+mIBIgYgcJCJ/FJEVIvKGiEz12ruLyLMissp73bfYY02FiFSIyGsi8rj3/mARedW7h3u9JImRRUT2EZHfichK7/sYXmrfg4j8yPsdLReRe0Skc9S/BxG5U0TWi8jyuDbfz10cd3hlg5eKyJDijbyFgHu4xfstLRWRh0Rkn7h90717eEtERhdn1K3xu4e4fdNEREWkp/c+J9+DCYjU7AJ+rKpHAscB3xORo4CrgOdUtS/wnPc+6kwFVsS9vwn4mXcPnwIXFWVU4bkd+L2qHgEMwt1LyXwPInIg8ENgmKr2xyWlPJfofw93Ad9IaAv63McAfb1tEjCnQGNMxV20vYdngf6qOhB4G5gO4P1/nwv0846Z7ZVELjZ30fYeEJGDcKWa18Q15+Z7UFXb0tiAR7wv4y3gAK/tAOCtYo8txbh74/6RTwIexxVo+hjo6O0fDjxd7HEmGX9X4D08x4q49pL5HmipmtgdlyjzcWB0KXwPQA2wPNXnDvwPcJ5fv2JvifeQsO8soMH7ezowPW7f08DwYo8/6B6A3+EmTI1Az1x+D6ZBpIGI1ABHA68CX1LVdQDe637FG1kobgOuBHZ773sAm1R1l/fet8RrhDgE2AD82lsmmycie1FC34OqfgDcipvprQM2A4spre8hRtDnHqp0cAT5V+Ap7++SuQcRGQd8oKqvJ+zKyT2YgAiJiHQBHgAuU9V/FHs86SAipwHrVXVxfLNP1yj7PHcEhgBzVPVo4AsivJzkh7dOfwZwMPBlYC/cUkAiUf4eUlFqvytEZAZuKbkh1uTTLXL3ICJVwAxgpt9un7a078EERAhEpBNOODSo6oNe80cicoC3/wBgfbHGF4IRwDgRaQR+i1tmug3YR0RiNUGiXuJ1LbBWVV/13v8OJzBK6Xs4GXhPVTeo6k7gQeB4Sut7iBH0uZdU6WARmQicBtSqtxZD6dzDobjJxuve/3Zv4K8isj85ugcTECkQEQF+BaxQ1Z/G7XoUmOj9PRFnm4gkqjpdVXurag3O+Pa8qtYCfwTGe92ifg9/B94XkcO9plHAm5TQ94BbWjpORKq831XsHkrme4gj6HN/FLjQ86I5DtgcW4qKGiLyDeAnwDhV3RK361HgXBHZU0QOxhl6FxRjjMlQ1WWqup+q1nj/22uBId7/Sm6+h2IbXaK+ASfgVLOlwBJvG4tbw38OWOW9di/2WEPez0jgce/vQ3A//HeA+4E9iz2+FGMfDCzyvouHgX1L7XsArgVWAsuBu4E9o/49APfgbCY7vYfQRUGfO25p4+fAu8AynMdWVO/hHdw6fez/+hdx/Wd49/AWMKbY4w+6h4T9jbQYqXPyPViqDcMwDMMXW2IyDMMwfDEBYRiGYfhiAsIwDMPwxQSEYRiG4YsJCMMwDMMXExBGpBGRs7wslUcU4dqNseyYYdqjgogcLSLzvL9nici0JH1nJbzvJSK/z/MQjRLBBIQRdc4DXsYF+Bnh+Dfgv5J1EJGjRORFYLKI/FVEzgNQ1Q3AOhEZUYBxGhHHBIQRWbz8VyNwQU3nxrWPFJEXpKU2RIMXmRyb3V/rPfSWxTSPxJm0uHoMNd7fD4vIYnF1GialMb4acXUpfukd+4yIVHr7viIifxCR172xHOpFtd7iXXuZiHwr7n7+JCL3icjbInKjiNSKyAKv36Fev14i8oCILPS2Ng9xEdkbGKhtk7chIheLyFPeGGcBv8GlgR4BLIzr+jBQG/ZzMMoXExBGlDkTV//hbeCThKInRwOXAUfhIpHjH5Yfq+oQ3MMvcHkljn9V1aHAMOCHItIjjTH2BX6uqv2ATcC/eO0NXvsgXL6ldcDZuGjwQbi8TLfE8hl5bVOBAcAFwGGq+lVgHvADr8/tuLoRx3jXmecznmG4KO1WiMj3gdOBM1V1K7ADl4G1g6puVdV34rovAv4pjc/AKFNMQBhR5jxcckG81/Pi9i1Q1bWquhuXJqEmbl8soeLihPYgfigirwN/wSU465vGGN9T1SXx1/Nm8Qeq6kMAqrpNXa6fE4B7VLVJVT8C/gQc4x27UFXXqep2XHqEZ7z2ZXH3cDLw3yKyBJdrp6t3rXgOwKVFj+cCXNbYf/HODy4H0QDg+yLymIgMiuu/Hpdt1mjndEzdxTAKjzeLPwnoLyKKq76mInKl12V7XPcmWv+Wt/u076L1hKizd52RuAfvcFXdIiIvxPaFJHEclfinWiZJe+J5dse9303LPXTwxrk1yXm20nb8y3GaS29c0SXU1aY4T0Suwy0vPYjLDop3fLJrGO0E0yCMqDIe+I2qVqvLVnkQ7uF2Qobna8SlB8dbqjrYa+8GfOoJhyNwZWWzQl29kLUicqZ3vT3F5e5/EfiWuNrgvYB/Jr0soc8A34+9EZHBPn1WAF9JaHsNuAR4VES+7B3bz9u3G6f57BXX/zB8lqmM9ocJCCOqnAc8lND2ADAhw/M9AHT3lmcm42oQA/we6CgiS4F/xy0z5YILcEtXS4H/A/bH3c9S4HXgeeBKdamZw/JDYJi4IvRvApcmdlDVlUC3xKUnVX0ZZ495wnPRPVtE/oKrpPaMd+4YXwOeSGNcRpli2VwNo8wQkR8Bn6mqnxE7se8sVZ2V0PYicIaqfpqnIRolgmkQhlF+zKG1TSMZL8S/8Za+fmrCwQDTIAzDMIwATIMwDMMwfDEBYRiGYfhiAsIwDMPwxQSEYRiG4YsJCMMwDMOX/w9fc6ulu0gORAAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "color=['red','blue','green','cyan','magenta']\n",
    "labels=['cluster1','cluster2','cluster3','cluster4','cluster5']\n",
    "for k in range(K):\n",
    "    plt.scatter(Output[k+1][:,0],Output[k+1][:,1],c=color[k],label=labels[k])\n",
    "plt.scatter(Centroids[:,0],Centroids[:,1],s=300,c='yellow',label='Centroids')\n",
    "plt.title('Clusters of customers')\n",
    "plt.xlabel('Annual Income (k$)')\n",
    "plt.ylabel('Spending Score (1-100)')\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#lets implement the same algorithm using sklearn libraries\n",
    "# Using the elbow method to find the optimal number of clusters\n",
    "from sklearn.cluster import KMeans\n",
    "wcss = []\n",
    "for i in range(1, 11):\n",
    "    kmeans = KMeans(n_clusters = i, init = 'k-means++', random_state = 42)\n",
    "    kmeans.fit(X)\n",
    "    wcss.append(kmeans.inertia_)\n",
    "plt.plot(range(1, 11), wcss)\n",
    "plt.title('The Elbow Method')\n",
    "plt.xlabel('Number of clusters')\n",
    "plt.ylabel('WCSS')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Fitting K-Means to the dataset\n",
    "kmeans = KMeans(n_clusters = 5, init = 'k-means++', random_state = 42)\n",
    "y_kmeans = kmeans.fit_predict(X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Visualising the clusters\n",
    "plt.scatter(X[y_kmeans == 0, 0], X[y_kmeans == 0, 1], s = 100, c = 'red', label = 'Cluster 1')\n",
    "plt.scatter(X[y_kmeans == 1, 0], X[y_kmeans == 1, 1], s = 100, c = 'blue', label = 'Cluster 2')\n",
    "plt.scatter(X[y_kmeans == 2, 0], X[y_kmeans == 2, 1], s = 100, c = 'green', label = 'Cluster 3')\n",
    "plt.scatter(X[y_kmeans == 3, 0], X[y_kmeans == 3, 1], s = 100, c = 'cyan', label = 'Cluster 4')\n",
    "plt.scatter(X[y_kmeans == 4, 0], X[y_kmeans == 4, 1], s = 100, c = 'magenta', label = 'Cluster 5')\n",
    "plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], s = 300, c = 'yellow', label = 'Centroids')\n",
    "plt.title('Clusters of customers')\n",
    "plt.xlabel('Annual Income (k$)')\n",
    "plt.ylabel('Spending Score (1-100)')\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
